Firmware is a piece of software that provides low-level control for a computing device's hardware. Firmware can be permanently installed in the computing device in a firmware storage device, e.g., in non-volatile memory components of the computing device. Firmware can be run through a computing device's central processing unit when the computing device is booted up. The computing device can have an operating system stored in its memory, and the operating system can access the firmware.
Occasionally, there may be a need for updating the firmware on the computing device. However, updating firmware can be a challenging process because of the need to retain operation functionality of the computing device both during and after the firmware is updated. Consequently, firmware vendors often try to avoid firmware updates because of the difficulty of maintaining a computing device's operation during and after updates. Nonetheless, the need for a firmware update for a computing device may be unavoidable in certain circumstances. For example, firmware updates may be needed to fix functionality issues detected after the computing device has shipped. Firmware updates may be needed to enable features already programmed into the computing device but not yet accessible by other software running on the computing device. Firmware updates may also be needed to upgrade the type of file formats that can be accessed by the computing device, or to update battery management features for the computing device.
One current method for updating firmware relies on booting into the operating environment already on the computing device. Through that operating environment, a process can be performed to implement the firmware updates into the firmware storage device. However, this process cannot recover computing devices with a failed operating environment. For example, this process cannot update firmware where the firmware has crashed, or where the operating environment on the computing device is inoperable.
Another current method for updating firmware relies on the use of an external management device that connects to the firmware storage device. This external management device can allow a firmware storage device to power on—even when the operating environment on the computing device is inoperable. However, such external management devices typically cannot perform more complex functions like selectively reading, editing, and writing data onto the firmware storage device. As a result, using an external management device typically results in having to rewrite or reimage the entire firmware. Consequently, when the firmware is rewritten, any previously existing data on the firmware storage device may be lost. The loss of such data may be unacceptable to the owner or operator of the computing device.
Therefore, what is needed is a system and method for updating firmware that does not require reimaging the entire firmware stored on the firmware storage device. Such a system and method should be able to provide updates even while the operating environment on the computing device is inaccessible. Such a system or method should provide an ability to do complex computational functions, and carry out customized update procedures on the firmware storage device. Finally, such a system and method should be able to host updates for a variety of firmware storage devices in a variety of computing devices for ease of operability.